#ifndef UTILS_H
#define UTILS_H

#include <string>
#include <sys/stat.h>

// 跨平台的目录创建函数
inline bool createDirectory(const std::string& path) {
#ifdef _WIN32
    return _mkdir(path.c_str()) == 0;
#else
    return mkdir(path.c_str(), 0755) == 0;
#endif
}

// 检查目录是否存在
inline bool directoryExists(const std::string& path) {
    struct stat info;
    return stat(path.c_str(), &info) == 0 && (info.st_mode & S_IFDIR);
}

// 检查文件是否存在
inline bool fileExists(const std::string& path) {
    struct stat buffer;
    return stat(path.c_str(), &buffer) == 0;
}

// 提取目录路径
inline std::string getDirectoryPath(const std::string& filepath) {
    size_t lastSlash = filepath.find_last_of("/\\");
    if (lastSlash != std::string::npos) {
        return filepath.substr(0, lastSlash);
    }
    return "";
}

// 提取文件名（不含扩展名）
inline std::string getFileNameWithoutExtension(const std::string& filepath) {
    size_t lastSlash = filepath.find_last_of("/\\");
    size_t lastDot = filepath.find_last_of(".");
    
    std::string filename = (lastSlash != std::string::npos) ? 
                          filepath.substr(lastSlash + 1) : filepath;
    
    if (lastDot != std::string::npos && lastDot > lastSlash) {
        filename = filename.substr(0, lastDot - (lastSlash == std::string::npos ? 0 : lastSlash + 1));
    }
    
    return filename;
}

#endif // UTILS_H
